package com.rabbiter.fm.config;

import com.rabbiter.fm.common.interceptor.LogCostInterceptor;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.HttpHeaders;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
//    /**
//     *  允许跨域访问
//     */
//    @Override
//    public void addCorsMappings(CorsRegistry registry) {
//        registry.addMapping("/**")  // 可限制哪个请求可以通过跨域
//                .allowedHeaders("*")  // 可限制固定请求头可以通过跨域
//                .allowedMethods("*") // 可限制固定methods可以通过跨域
//
//                .allowedOriginPatterns("*")  // 可限制访问ip可以通过跨域
//                .allowCredentials(true) // 是否允许发送cookie
//                .exposedHeaders(HttpHeaders.SET_COOKIE);
//    }


    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")  // 允许所有路径跨域访问
                .allowedHeaders("*")  // 允许所有请求头
                .allowedMethods("*")  // 允许所有 HTTP 方法
                .allowedOriginPatterns("*")  // 允许所有来源
                .allowCredentials(true)  // 是否允许发送 Cookie
                .exposedHeaders(HttpHeaders.CONTENT_TYPE, HttpHeaders.CONTENT_LENGTH); // 暴露必要响应头
    }

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new LogCostInterceptor()).addPathPatterns("/**");
    }
}
